# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Calendar.V3.Model.EventAttendee do
  @moduledoc """


  ## Attributes

  *   `additionalGuests` (*type:* `integer()`, *default:* `0`) - Number of additional guests. Optional. The default is 0.
  *   `comment` (*type:* `String.t`, *default:* `nil`) - The attendee's response comment. Optional.
  *   `displayName` (*type:* `String.t`, *default:* `nil`) - The attendee's name, if available. Optional.
  *   `email` (*type:* `String.t`, *default:* `nil`) - The attendee's email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
      Required when adding an attendee.
  *   `id` (*type:* `String.t`, *default:* `nil`) - The attendee's Profile ID, if available.
  *   `optional` (*type:* `boolean()`, *default:* `false`) - Whether this is an optional attendee. Optional. The default is False.
  *   `organizer` (*type:* `boolean()`, *default:* `nil`) - Whether the attendee is the organizer of the event. Read-only. The default is False.
  *   `resource` (*type:* `boolean()`, *default:* `false`) - Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
  *   `responseStatus` (*type:* `String.t`, *default:* `nil`) - The attendee's response status. Possible values are:  
      - "needsAction" - The attendee has not responded to the invitation (recommended for new events). 
      - "declined" - The attendee has declined the invitation. 
      - "tentative" - The attendee has tentatively accepted the invitation. 
      - "accepted" - The attendee has accepted the invitation.  Warning: If you add an event using the values declined, tentative, or accepted, attendees with the "Add invitations to my calendar" setting set to "When I respond to invitation in email" or "Only if the sender is known" might have their response reset to needsAction and won't see an event in their calendar unless they change their response in the event invitation email. Furthermore, if more than 200 guests are invited to the event, response status is not propagated to the guests.
  *   `self` (*type:* `boolean()`, *default:* `false`) - Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :additionalGuests => integer() | nil,
          :comment => String.t() | nil,
          :displayName => String.t() | nil,
          :email => String.t() | nil,
          :id => String.t() | nil,
          :optional => boolean() | nil,
          :organizer => boolean() | nil,
          :resource => boolean() | nil,
          :responseStatus => String.t() | nil,
          :self => boolean() | nil
        }

  field(:additionalGuests)
  field(:comment)
  field(:displayName)
  field(:email)
  field(:id)
  field(:optional)
  field(:organizer)
  field(:resource)
  field(:responseStatus)
  field(:self)
end

defimpl Poison.Decoder, for: GoogleApi.Calendar.V3.Model.EventAttendee do
  def decode(value, options) do
    GoogleApi.Calendar.V3.Model.EventAttendee.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Calendar.V3.Model.EventAttendee do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
